#include <mips/regdef.h>
#include <sys/syscall.h>

	.text
	.align	2

	.globl	strini
	.ent	strini
strini:
	.frame	$fp,40,ra

	.set noreorder
	.cpload	t9
	.set reorder

	subu	sp,sp,40

	# Guardo los registros
	.cprestore 24
	sw	ra,32(sp)
	sw	$fp,28(sp)
	move	$fp,sp

	# guardo los parametros
	sw	a0, 40($fp)	//buffer a inicializar
	sw	a1, 44($fp)	//longitud del string
/*	
	################
	li	v0, SYS_write 
	li	a0, 1
	la	a1, str_ini
	li	a2, 13
	syscall
	###############	
*/	
	# inicializar
	li 		t1, 0
	lw		t2,	40($fp)
	lw		t3,	44($fp)

strini_loop:
	bgeu	t1, t3, strini_return
	sb		zero, 0(t2)
	addiu	t1, t1, 1
	addiu	t2, t2, 1
	sw		t1, 16($fp)
	sw		t2, 20($fp)
/*	################
	li	v0, SYS_write 
	li	a0, 1
	la	a1, str_x
	li	a2, 1
	syscall
	###############*/
	lw 		t1, 16($fp)
	lw		t2,	20($fp)
	lw		t3,	44($fp)

	j	strini_loop

strini_return:
/*	################
	li	v0, SYS_write 
	li	a0, 1
	la	a1, str_salto
	li	a2, 1
	syscall
	###############*/
	# Destruimos el frame.
	# destruyo el stack
	move	sp, $fp
	lw	$fp, 28(sp)
	lw	ra,  32(sp)
	addu	sp, sp, 40

	j	ra
	.end	strini

	.rdata
str_x:	.asciiz	"x"
str_ini:	.asciiz	"\ninicializar:"
str_salto:	.asciiz	"\n"
